C++ ゼロオーバーヘッド原則
ゼロオーバーヘッド原則(Zero Overhead Principle)
C++のゼロオーバーヘッド原則
C++ implementations obey the zero-overhead principle: What you don't use, you don't pay for Stroustrup, 1994. And further: What you do use, you couldn't hand code any better. ゼロオーバーヘッドの原則(Zero Overhead Principal)とは、使わない機能のオーバーヘッドを支払うべきではないという原則である。ある機能があったとして、その機能を使わない場合、その機能をサポートするために必要なオーバーヘッドがもたらされてはならない。C++は伝統的に、この原則を強く意識してきた。Bjarne StroustrupがSimulaを使ってシミュレーターを書いたら、使いもしないGCのオーバーヘッドでプログラムの実行時間の80%が浪費されていたことは、あまりにも有名だ。
The zero-overhead principle is a C++ design principle that states:
1. You don't pay for what you don't use.
2. What you do use is just as efficient as what you could reasonably write by hand.
In general, this means that no feature should be added to C++ that would impose any overhead, whether in time or space, greater than a programmer would introduce without using the feature.
The only two features in the language that do not follow the zero-overhead principle are runtime type identification and exceptions, and are why most compilers include a switch to turn them off.
↓
ゼロオーバーヘッドの原則は、次のようなC++設計原則です。
1. 使用しないものには料金を支払う必要はありません。
2. 実際に使用するものは、合理的に手書きできるものと同じくらい効率的です。
一般に、これは、時間的または空間的を問わず、プログラマがその機能を使用せずに導入するよりも大きなオーバーヘッドを課すような機能を C++ に追加すべきではないことを意味します。
この言語でゼロオーバーヘッドの原則に従っていない機能は、 ランタイム型識別と例外の2つだけであり、ほとんどのコンパイラーにこれらの機能をオフにするスイッチが含まれているのはこのためです。
実行時型識別(Run-Time Type Identification(RTTI))と例外(exception)だけはゼロオーバーヘッド原則に従わない 実行時型情報(Run-Time Type Information)の場合もある
C++のゼロオーバーヘッド原則を実現するためにコンパイラが使用しない機能をオフにするフラグが実装されている
GCC:
例外: -fno-exceptions
関連
確認用
Q. C++のゼロオーバーヘッド原則とは
Q. ゼロオーバーヘッド原則に従っていない機能は何か
Q. ゼロオーバーヘッド原則に従っている機能は何か
参考
メモ
調査用
Wikipedia.icon
Wikipedia.icon